package cn.song.freight.domain.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

/**
 * 通用状态更新数据传输对象
 * <pre>
 * 用于所有需要更新状态的操作。
 * 包含要更新的记录ID和新的状态值。
 *
 * 适用场景：
 * - 启用/禁用功能
 * - 状态切换操作
 * - 审核状态更新
 * - 其他状态相关的更新操作
 *
 * @author SongRenShuo
 * @version 3.0.0
 * @since 2025-08-24
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "通用状态更新数据传输对象")
public class BaseStatusUpdateDTO {

    /**
     * 记录ID - 要更新状态的记录唯一标识符
     */
    @NotNull(message = "ID不能为空")
    @ApiModelProperty(value = "记录ID", required = true, example = "1")
    private Long id;

    /**
     * 状态 - 新的状态值
     * 1-启用，2-禁用
     */
    @NotNull(message = "状态不能为空")
    @ApiModelProperty(value = "状态(1-启用，2-禁用)", required = true, example = "1")
    @Min(value = 1, message = "状态值不能小于1")
    @Max(value = 2, message = "状态值不能大于2")
    private Integer status;
}
